package com.bysj.lms.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bysj.lms.common.Const;
import com.bysj.lms.mapper.LmsCheckMapper;
import com.bysj.lms.pojo.entity.LmsCheck;
import com.bysj.lms.pojo.entity.LmsFa;
import com.bysj.lms.pojo.entity.LmsLve;
import com.bysj.lms.service.ILmsCheckService;
import com.bysj.lms.service.ILmsFaService;
import com.bysj.lms.service.ILmsLveService;
import com.bysj.lms.utils.RedisUtil;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

import java.text.SimpleDateFormat;
import java.util.*;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author xiaojiakai
 * @since 2022-04-15
 */
@Service
public class LmsCheckServiceImpl extends ServiceImpl<LmsCheckMapper, LmsCheck> implements ILmsCheckService {
    
    @Autowired
    ILmsFaService lmsFaService;
    
    @Autowired
    LmsCheckMapper lmsCheckMapper;
    
    @Autowired
    ILmsLveService lmsLveService;
    
    @Override
    //每月1号执行一次（除了1月）
    @Scheduled(cron = "0 0 0 1 2,3,4,5,6,7,8,9,10,11,12 ? ")
    public void saveRondom() {
        List<LmsFa> list = lmsFaService.LmsFas();
        if(list.size()!=0){
            //洗牌
            Collections.shuffle(list);
            int index = list.size()/4;
            List<LmsFa> checkList = list.subList(0, index);
            ArrayList<LmsCheck> lmsChecks = new ArrayList<>();
            checkList.forEach(lmsFa -> {
                LmsCheck lmsCheck = new LmsCheck();
                lmsCheck.setInstruNumber(lmsFa.getInstruNumber());
                lmsCheck.setInstruName(lmsFa.getInstruName());
                lmsCheck.setRoomId(lmsFa.getRoom_id());
                lmsCheck.setType("M");
                lmsCheck.setInstruType("0");
                lmsCheck.setStatus("0");
                lmsChecks.add(lmsCheck);
            });
            lmsCheckMapper.saveBatch(lmsChecks);
        }
    }
    
    @Override
    //每半年即6月12月1号执行一次
    @Scheduled(cron = "0 0 0 1 6,12 ? ")
    public void saveHYC() {
        List<LmsLve> list = lmsLveService.list();
        ArrayList<LmsCheck> lmsChecks = new ArrayList<>();
        list.forEach(lmsLve -> {
            LmsCheck lmsCheck = new LmsCheck();
            lmsCheck.setInstruNumber(lmsLve.getInstruNumber());
            lmsCheck.setInstruName(lmsLve.getInstruName());
            lmsCheck.setType("HY");
            lmsCheck.setInstruType("1");
            lmsCheck.setStatus("0");
            lmsCheck.setRoomId(lmsLve.getRoomId());
            lmsChecks.add(lmsCheck);
        });
        lmsCheckMapper.saveBatch(lmsChecks);
    }
    
    
    //1月固定年底清查
    @Scheduled(cron = "0 0 0 1 1 ? ")
    @Override
    public void saveYC() {
        List<LmsFa> list = lmsFaService.list();
        ArrayList<LmsCheck> lmsChecks = new ArrayList<>();
        list.forEach(lmsFa -> {
            LmsCheck lmsCheck = new LmsCheck();
            lmsCheck.setInstruNumber(lmsFa.getInstruNumber());
            lmsCheck.setInstruName(lmsFa.getInstruName());
            lmsCheck.setType("Y");
            lmsCheck.setInstruType("1");
            lmsCheck.setStatus("0");
            lmsCheck.setRoomId(lmsFa.getRoom_id());
            lmsChecks.add(lmsCheck);
        });
        lmsCheckMapper.saveBatch(lmsChecks);
    }
    
    @Override
    public PageInfo getList(Integer page, Integer count,String type) {
        PageHelper.startPage(page,count);
        List<LmsCheck> list = lmsCheckMapper.getList(type);
        return new PageInfo(list);
    }
    
}
